<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head><title>Programming in Lua : 14</title>
<link rel="stylesheet" type="text/css" href="pil.css">
</head>
<body>
<p class="warning">
<A HREF="contents.html"><IMG TITLE="Programming in Lua (first edition)" SRC="capa.jpg" ALT="" ALIGN="left"></A>This first edition was written for Lua 5.0. While still largely relevant for later versions, there are some differences.<BR>The third edition targets Lua 5.2 and is available at <A HREF="http://www.amazon.com/exec/obidos/ASIN/859037985X/theprogrammil3-20">Amazon</A> and other bookstores.<BR>By buying the book, you also help to <A HREF="../donations.html">support the Lua project</A>.
</p>
<table width="100%" class="nav">
<tr>
<td width="10%" align="left"><a href="13.4.5.html"><img border="0" src="left.png" alt="Previous"></a></td>
<td width="80%" align="center"><a href="contents.html"><font face="Helvetica,Arial,sanserif">
<font color="gray">Programming in </font><font color="blue"> Lua</font>
</font></a></td>
<td width="10%" align="right"><a href="14.1.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
<tr>
<td width="10%" align="left"></td>
<td width="80%" align="center"><a href="contents.html#P2">Part II. Tables and Objects</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="contents.html#14">Chapter 14. The Environment</a></td>
<td width="10%" align="right"></td></tr>
</table>
<hr/>
<a name="EnvironmentSec"><h1>14 &ndash; The Environment</h1></a>

<p>

<p>Lua keeps all its global variables in a regular table,
called the <em>environment</em>.
(To be more precise,
Lua keeps its "global" variables in several environments,
but we will ignore this multiplicity for a while.)
One advantage of this structure is that it simplifies the internal
implementation of Lua,
because there is no need for a different data structure for global variables.
The other (actually the main) advantage is that we can manipulate this
table as any other table.
To facilitate such manipulations,
Lua stores the environment itself in a global variable <code>_G</code>.
(Yes, <code>_G._G</code> is equal to <code>_G</code>.)
For instance,
the following code prints the names of
all global variables defined in the current environment:
<pre>
    for n in pairs(_G) do print(n) end
</pre>

<p>In this chapter, we will see several useful techniques to manipulate
the environment.

<hr/>
<table width="100%" class="nav">
<tr valign="top">
<td width="90%" align="left">
<small>
  Copyright &copy; 2003&ndash;2004 Roberto Ierusalimschy.  All rights reserved.
</small>
</td>
<td width="10%" align="right"><a href="14.1.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
</table>


</body></html>

